package models

import (
	"time"
)

// Item 代表单个作品
type Item struct {
	ID        uint      `json:"id" gorm:"primarykey"` // 数据库主键
	CreatedAt time.Time `json:"createdAt"`            // 创建时间

	Category    uint8  `json:"category"`    // 作品类型
	Name        string `json:"name"`        // 作品名称
	Description string `json:"description"` // 作品描述

	FileName string `json:"fileName"` // 上传文件名称
	FileSize int64  `json:"fileSize"` // 上传文件大小
	FileType string `json:"fileType"` // 上传文件类型

	FileHash string `json:"fileHash"` // 上传文件哈希值
	TxHash   string `json:"txHash"`   // 确权交易哈希值 作为确权的编号

	Status uint8 `json:"status"` // 0 确权中 1 确权完成 2 定价交易 3 拍卖 4 授权
	Price  uint  `json:"price"`

	CreatorID uint `json:"-"`                                   // 作品创建者的外键
	Creator   User `json:"creator" gorm:"foreignKey:CreatorID"` // 作品创建者

	OwnerID uint `json:"-"`                               // 作品当前拥有者的外键
	Owner   User `json:"owner" gorm:"foreignKey:OwnerID"` // 作品当前拥有者

	Trades []Trade `json:"trades"` // 相关所有交易
}

// Trade 交易记录
type Trade struct {
	ID        uint      `json:"id" gorm:"primarykey"` // 数据库主键
	CreatedAt time.Time `json:"createdAt"`            // 创建时间

	ItemID uint `json:"itemID"` // 数据库主键
	Item   Item `json:"item"`

	FromUserID uint `json:"-"`                                 // 发起方
	From       User `json:"from" gorm:"foreignKey:FromUserID"` // 发起方
	ToUserID   uint `json:"-"`                                 // 接收方
	To         User `json:"to" gorm:"foreignKey:ToUserID"`     // 接收方

	TxHash string `json:"txHash"`
	Price  uint   `json:"price"` // 金额
	Type   uint   `json:"type"`  // 类型
	Status uint8  `json:"status"`

	BlockTime   uint64 `json:"blockTime"`   // 区块的创建时间
	BlockNumber uint64 `json:"blockNumber"` // 区块高度
}
